.lf 1 ./smcreate.1
.pl 29.7c
.\\" $Id: smcreate.1,v 1.3 2004/07/11 08:04:47 bhepple Exp $
.lf 1 ./extramac
.\\" $Id: extramac,v 1.3 2004/07/11 08:04:47 bhepple Exp $
.de SD\" 		 Start of Screen Dump
.LP
.ne 2i\"		 Need 2 inches at least
.mk z
.\".sp -1
.in 0\"			 No indent
.nf\"			 No fill
.if t \fC\"		 Constant width font
.if n \l'7.5i'
..
.de BB\"	Start key diagram
.LP
.ne 1.5i
.mk z
.if t \f(CB
.in 0
.sp -1
.if n \{\
\l'7.5i'
.sp
\}
.nf
..
.de BX\"	 Not quite the same as the -me one ...
.if t \k~\(br\\$1\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\\$2
.if n \{\
.nr a \w'\\$1'
\l'\\nau'\\$2
\}
..
.de bx\"	nroff replacement for .PS box()
\ka\\$1\ \kh\h'|\\nau'\v'1'\\$2\h'|\\nhu'\v'-1'\c
..
.de EB\"	Draw box around diagram (must have set .mk z at start of box
.if n .sp 2
.ce
\fB\\$1\fP
.ie t \{\
.sp -.5
.nf
\h'-.5n'\L'|\\nzu-1'\l'\\n(.lu+1n\(ul'\L'-|\\nzu+1'\l'|0u-.5n\(ul'
\}
.fi
.el \l'7.5i'
.LP
..
.lf 4 ./smcreate.1
.TH SMCREATE 1 "Sat Oct 31 1992" "\&\(co Bob Hepple"
.UC 4
.SH NAME
smcreate \- edit
.B "Screen Manager"
screen and data definition files
.SH SYNOPSIS
.B smcreate
[ [
.B \-d
.I screen
] [
.B \-k
.I softkey
]\0
.I "screen\-file"
]
.SH DESCRIPTION
.B smcreate
is a screen layout editor which can be used with
.B smdata
(which is a data file editor) or with the C language.
.B smcreate
allows you to interactively design your screens, define the labelling and
function of softkeys and specify the
layout of the data files.
The screens and softkey labels defined by
.B smcreate
are stored in
.I screen\-files
and can be dumped to stdout by the
.BR -d
or
.B -k
options for documentation or other purposes.
Using these options
allows the developer of an application to automate the production of
documentation (see the
.B dump2man.sed
script for a screendump to
.BR gtroff (1)
filter).
.LP
Note that
.B smcreate
is itself written with
screens designed and maintained by
.B smcreate.
.LP
Generally data files in Unix (such as address lists etc) are held in
text form with one record per line and with a special symbol such as
\&';' used as a field separator.
Fields in Unix data files are therefore
of variable length.
A typical example on all Unix systems is the
\fB/etc/passwd\fP file.
The utilities
.BR sort (1),
.BR grep (1)
and
.BR awk (1)
can manipulate these files in powerful ways.
.LP
Unfortunately, Unix lacks a forms definition utility to enable the
user to edit these data files in a convenient visual way - users often
have to resort to
.BR vi (1)
or other text editors to manipulate these data files with all the
errors associated with getting the fields in the wrong order or
misplacing the separators.
The difficulty of using
.BR vi (1)
is compounded by its terse look-and-feel and unfriendly approach to
the user.
For infrequent or casual users of Unix,
.BR vi (1)
is almost impossible to use and highly dangerous on critical data
files.
.LP
It is intended that
.BR smcreate (1)
and the other programs in the
.B "Screen Manager"
package should fill this gap by providing an easy to use yet powerful data
editing facility.
It is easy enough for someone with little more than word processing
experience to be able to enter and maintain fairly complex data files
with the
.B "Screen Manager."
A little more expertise is needed to be able to set out and design
data entry forms.
Refer to
.BR smquick (1)
for a quick way to create a screen description file for an already
existing data file.
.LP
As a highly interactive program, most of the operation of
.B smcreate
is intuitive with commands appearing on special softkey labels
on the screen.
For the power user, shortcut 'keycodes' similar to
.BR emacs (1)
are available (see
.BR scrmgr (1)
for a list).
An on-line help utility is never far away.
.LP
When
.B smcreate
starts, the screen shows command softkeys as in Fig. 1.  The
\fI"Softkey Editor"\fP and \fI"Menu Editor"\fP keys are only
appropriate for using
.B "Screen Manager"
in C programs and are discussed latter.
.LP
.ne 6v
.BB
.PS 6.5i
.lf 1 ./main.sky
.bx "Open\ \ \ \ " "File\ \ \ \ "
.bx "Save\ \ \ \ " "File\ \ \ \ "
.bx "Clear\ \ \ " "File\ \ \ \ "
.bx "Global\ \ " "Editor\ \ "
.bx "Screen\ \ " "Editor\ \ "
.bx "Softkey\ " "Editor\ \ "
.bx "Menu\ \ \ \ " "Editor\ \ "
.bx "Exit\ \ \ \ " "\ \ \ \ \ \ \ \ "
.lf 123 ./smcreate.1
.PE
.EB "Fig 1. Main softkeys"
.LP
.ne 17v
.SD
.ie n \{\
.nf
.na
.lf 1 ./flrecord.dmp
                             Global Attributes

Tag:       ####################^ ... tag field for variable record files.
If used, it must be a field present in EVERY record type.
Set to blank for simple files with only one record type.

Separator: # Usually ';' but could be any character not used
in the data. SPACE implies any string of spaces or tabs.
't' means TAB. '0' (zero) means NULL i.e. end of string or line.
.lf 132 ./smcreate.1
.fi
.ad b
\}
.el \{\
.lf 1 ./flrecord.scr
\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0Global\0Attributes
.br
\0
.fi
Tag:\0\0\0\0\0\0\0\c\c
.BX "                    " "^\0...\0tag\0field\0for\0variable\0record\0files."
.nf
If\0used,\0it\0must\0be\0a\0field\0present\0in\0EVERY\0record\0type.
Set\0to\0blank\0for\0simple\0files\0with\0only\0one\0record\0type.
.br
\0
.fi
Separator:\0\c\c
.BX " " "\0Usually\0';'\0but\0could\0be\0any\0character\0not\0used"
.nf
in\0the\0data.\0SPACE\0implies\0any\0string\0of\0spaces\0or\0tabs.
\&'t'\0means\0TAB.\0'0'\0(zero)\0means\0NULL\0i.e.\0end\0of\0string\0or\0line.
.lf 137 ./smcreate.1
\}
.if t \f(CB
.if n .sp
.PS 6.5i
.lf 1 ./file.sky
.bx "Cancel\ \ " "\ \ \ \ \ \ \ \ "
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "Main\ \ \ \ " "Keys\ \ \ \ "
.lf 142 ./smcreate.1
.PE
.EB "Fig 2. Global Editor Screen."
The \fIGlobal Editor\fP key brings up a screen as in Fig. 2.
.TP
.B Tag
The tag is used in complex data files which have variant records -
that is, not all the records have the same layout.
For example, some
records may be \fITAG;NAME;ADDRESS\fP and others may be
\fITAG;NAME;PHONE\fP.
In this case the first field is acting as the
tag.
A popup menu is available for the tag field name with Meta-T.
Note that tagged files are more difficult to enter with
.B smdata
and more difficult to maintain and use with the other UNIX utilities.
.TP
.B Separator
Almost any ASCII character can be used as the field separator.
To use
\&'white space' as the separator, enter a \fBSPACE\fP - but note that the
.BR join (1)
command of UNIX does not have a 'whitespace' separator as such.
Under
.BR join (1),
a \fBSPACE\fP separator is literally that - each space delimits a field.
I advise you to not use \fBSPACE\fP as a separator.
To use the tab
character, enter a \fBt\fP.
For one field per record (e.g. a plain
ascii text file) enter a \fB0\fP (zero).
.SH SCREEN EDITOR
The \fIScreen Editor\fP is the core of
.BR smcreate .
A blank screen is presented on which you can 'paint' your screen
layout.
Just type in the background text (or import it from a text
file) and then superimpose the fields that each record contains.
For
tagged fields you need to create one screen per record variant.
There
are two sets of softkeys available with the \fIScreen Editor\fP, the
\fIField Softkeys\fP as in Fig. 3 and the \fIScreen Softkeys\fP as in
Fig. 5.
.LP
.ne 7v
.SH FIELD KEYS
.BB
.PS 6.5i
.lf 1 ./scrfield.sky
.bx "Create\ \ " "Field\ \ \ "
.bx "Edit\ \ \ \ " "Field\ \ \ "
.bx "Delete\ \ " "Field\ \ \ "
.bx "Move\ \ \ \ " "Line\ \ \ \ "
.bx "Move\ \ \ \ " "Field\ \ \ "
.bx "Order\ \ \ " "Fields\ \ "
.bx "Screen\ \ " "Keys\ \ \ \ "
.bx "Main\ \ \ \ " "Keys\ \ \ \ "
.lf 192 ./smcreate.1
.PE
.EB "Fig. 3. Field Softkeys."
.LP
In using \fICreate Field\fP you should give each field a name (unamed
fields of length 0 are not saved!!).
The default row and column is the
cursor position when the function was invoked.
The \fIAttribute\fP
field is normally 1 (the default - inverse video) or 0 (same as
background text) as the other attributes are not supported identically
on all terminals.
The \fICreate Field\fP and \fIEdit Field\fP buttons
bring up the screen shown in Fig. 4.
.LP
.ne 28v
.SD
.ie n \{\
.nf
.na
.lf 1 ./fdrecord.dmp
                             Field definition
Attribute : 0=Normal     1=Inverse   2=Standout  4=Blink   8=Underline 16=Bold
Field Type: 0=Alphanum   1=Integer   2=Float     3=Fixed   4=Binary     5=Octal
 6=Hex      7=Alpha      8=DD/MM/YY  9=MM/DD/YY 10=Time   11=Boolean   12=Field
13=File    14=Timestamp 15=Dir
+100 for non-blank. +200 for popups and put ';' separated list in default.
+400 to disallow insert. For File & Dir +400 to disallow chdir.
default: for file/dir types (13/15)'mask Message' e.g. '*.txt Pick a text file'
         $date puts today in the field
             Row  Col   Hidden   Maxlen
               |  | Attr| Protect|
Name       Len v  v  v  v v Type v  Default    Key        Trigger    Next Fld
########## ### ## ## ## # # ### ### ########## ##########^########## ##########^
.lf 212 ./smcreate.1
.fi
.ad b
\}
.el .so fdrecord.scr
.if t \f(CB
.if n .sp
.PS 6.5i
.lf 1 ./editfld.sky
.bx "Cancel\ \ " "\ \ \ \ \ \ \ \ "
.bx "Copy a\ \ " "field\ \ \ "
.bx "Paste a\ " "field\ \ \ "
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "Delete\ \ " "field\ \ \ "
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "Done\ \ \ \ " "\ \ \ \ \ \ \ \ "
.lf 220 ./smcreate.1
.PE
.EB "Fig. 4. Field Edit Screen."
.LP
\fIHidden\fP fields do not appear on the screen.
.LP
Fields with \fIProtect\fP set cannot be altered by the user.
.LP
.B smdata
checks data input according to the \fIField type\fP and only allows
legal values - however, if the data file is created or altered by any
other program there is no way to enforce legal characters (e.g. 'A' in
a numeric field).
Field types are as follows.
Add 100 to enforce non-blank.
Add 200 to enable a popup list through the default value (see below).
.TP
.B 0
Alphanumeric - any character (except the separator) is legal.
.TP
.B 1
Integer
.TP
.B 2
Floating point number
.TP
.B 3
Fixed point number
.TP
.B 4
Binary number
.TP
.B 5
Octal number
.TP
.B 6
Hexadecimal number
.TP
.B 7
Alphabetic (no numbers or punctuation)
.TP
.B 8
Date DD/MM/YY
.TP
.B 9
Date MM/DD/YY
.TP
.B 10
Time
.TP
.B 11
Boolean (Y or N)
.TP
.B 12
Field from current screen (creates a popup automatically)
.TP
.B 13
File name.
A popup is made
available to the user of this field (by pressing M-m) through a mask
(such as '*.txt') and an optional prompt (such as 'Enter filename')
which are both specified in the \fIDefault\fP field.
Display and changing to directories can be prevented by adding 400 to
the field type and using 413 instead of 13.
.TP
.B 14
Timestamp.
This is a record of the date and time that the record was altered.
This information is kept in the form 940131085959 which is in the form
YYMMDDHHMMSS.
This should generally be 12 characters long and protected.
.TP
.B 15
Directory.
As with a filename, a popup is available. Also, changing directories
can be prevented by adding 400 i.e. to make this a directory popup
field with no changing of directories use 415.
.TP
.B +100
Non-blank.
The field may not be left blank.
.TP
.B +200
Popup field.
The user may popup a list of valid entries with Meta-m.
These entries are listed as a ';' separated list in the
.I Default
field.
It is a useful convention to append a '^' to any field that has a
popup list attached to it.
.TP
.B +400
No chdir.
For field-types 13 and 15, prevent the user from changing directory.
.LP
The \fILength\fP of a field can be negative - in which case a fixed
length field of that length is produced.
This field will
.B not
be delimited with a separator character!
.LP
The \fIDefault\fP value of the field can be specified with the
following dynamic values:
.RS
.TP
.B $date
Today's date in the form 921031.
.TP
.B Popup Values
A ';' separated list of the popup values to be made available (also
add 200 to the field type).
The default is set to the first item in the popup.
If no default is needed, start the list with ';'.
.TP
.B File mask and prompt.
For field types 13 and 15 (file and directory) the
.I Default
field is used to specify the file mask (e.g. *.txt) and an optional
prompt. Thus to list all *.txt files and to use a prompt enter "*.txt
Enter Filename" with just a space between the two.
.RE
.LP
The \fIKey\fP of a field specifies if the value of the field is to be
referred to a look-up in another file - a 'master file'.
For example,
the field might be 'customer name' in which case the \fIKey\fP of a
field in a detail record would point to the screen name for the
customer master file.
.LP
The \fITrigger fn\fP is only used in programming with C and refers to
the name of a function that is to be called by the application after
the field has been completed.
This allows the application to do
aditional checking on the field value.
.LP
The order of the fields on the screen need not relate to the order in
the file.
In the default case, the ordering is assumed to be the same
but the \fIOrder Fields\fP command allows you to override this.
.LP
The order in which the fields are filled out can be changed from the
default (which is "left to right and top to bottom") by specifying the
\fINext Field\fP.
Once this field is complete, the cursor will then
move automatically to the \fINext Field\fP.
There is a
popup for existing fieldnames available by pressing M-m.
.SH SCREEN KEYS
.LP
As shown in Fig. 5,
.B "Screen Manager"
screen layouts can be exchanged with external files via the \fIExport
Screen, Exp&Edit Screen\fP and \fIImport Screen\fP commands.  On
export, any fields are denoted with \fB#\fP characters - but they are
not examined on input.  Existing fields are not affected by the
background layouts that have been imported.  The editor invoked by
\fIExp&Edit Screen\fP is
.BR vi (1)
unless $EDITOR is set.
.LP
.ne 7v
.BB
.PS 6.5i
.lf 1 ./screen.sky
.bx "Export\ \ " "Screen\ \ "
.bx "Exp&Edit" "Screen\ \ "
.bx "Import\ \ " "Screen\ \ "
.bx "Delete\ \ " "Screen\ \ "
.bx "Create\ \ " "Screen\ \ "
.bx "Screen\ \ " "Name\ \ \ \ "
.bx "Field\ \ \ " "Keys\ \ \ \ "
.bx "Main\ \ \ \ " "Keys\ \ \ \ "
.lf 383 ./smcreate.1
.PE
.EB "Fig. 5. Screen Softkeys."
.LP
The \fIScreen Name\fP button brings up the screen shown in Fig. 6.
.LP
.ne 22
.SD
.ie n \{\
.nf
.na
.lf 1 ./screcord.dmp
                             Screen Definition

Screen name: ####################              File Name: ###############^
Temporary storage for file:     #^ M:Memory, F:File, D:dbm
First field: ####################^
Softkey Set: ####################^           Auto Adjust: #
-----------------------------------------------------------------------------
Scrolling    : # Set to Y if the screen is to scroll records on its last line
Constant Part: ####################^ First field in constant part
to           : ####################^ First field not in constant part
-----------------------------------------------------------------------------

Sort field            Ignore case  Month     Numeric      Reverse
####################^ #            #         #            #
.lf 394 ./smcreate.1
.fi
.ad b
\}
.el .so screcord.scr
.if t \f(CB
.if n .sp
.PS 6.5i
.lf 1 ./scr_name.sky
.bx "Cancel\ \ " "\ \ \ \ \ \ \ \ "
.bx "Delete a" "sort key"
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "Add a\ \ \ " "sort key"
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "Done\ \ \ \ " "\ \ \ \ \ \ \ \ "
.lf 402 ./smcreate.1
.PE
.EB "Fig. 6. Screen Definition."
.TP
.B File Name
This is the default file to look for data pertaining to this screen.
It can be overridden by
.B smdata
but it is very useful to specify in multiple file databases.
Note that
it can popup a list of existing *.txt files.
.TP
.B Temporary storage
.B smdata
uses a temporary storage area for editing the data files.
This allows
editing to be abandoned if mistakes are made and to start afresh.
Normally, the computer's RAM is used (the heap) but on PC's this can be
restrictive as program and data must fit into less than 640 kb.
As an
alternative, the data can be stored in a temporary file.
This is much
slower (particularly going backwards in a file) but allows large files
to be edited.
Up to two versions of the file might be required by
.B smdata
so please ensure there is enough disc space.
.B smdata
uses the environment parameter \fB$TMP\fP to store temporary files.
At
some future date other forms of temporary or primary access route may
be supported (such as ndbm or SQL).
The storage method can be
overridden when running
.B smdata.
.TP
.B "First Field"
This is the field that the cursor should initially land in when
entering data.
If blank, the upper leftmost field is used.
There is a
popup for existing fieldnames available by pressing M-m.
.TP
.B Scrolling
This can be set to Y or N.
If Y, then multiple records of the file
will be displayed at once in a list.
It is assumed that the last line
in the screen with fields should be the line used for scrolling.
For example, in a customer invoice file, the customer number might be
the constant part and
.B smdata
would then scroll over all records for a given customer.
Enter the
field names of the first field of the constant part and the first
field not in the constant part.
Popup menus are available (Meta-m).
.TP
.B Constant Part
In scrolling screens the \fIConstant Part\fP refers to those fields
which determine which records should be grouped together on one
screen.
.TP
.B Sort Keys
These are used by the
.B smdata
program when outputing the data files - they specify the order the
file should be written in on output from
.BR smdata .
In fact,
.B smdata
uses the
.BR sort (1)
command as an output filter if sort keys are specified.
Note that the
file is not necessarily kept in order during editing.
If the file is
kept in memory (rather than as a temporary file) it can be sorted on
demand by
.B smdata
SORT key.
.SH SOFTKEY EDITOR
When writing programs in C to use the same user interface as
.BR smdata or
.B smcreate
you can use the screen editor to create screen layouts and the softkey
editor to layout the command softkey labels.
The \fISoftkey Editor\fP
button brings up the screen shown in Fig. 7.
.LP
.ne 32v
.SD
.ie n \{\
.nf
.na
.lf 1 ./kyrecord.dmp
                             Softkey definition
  Keyset Name: ########################################

  Command Name   Toggle? Help                           Next key/command
1 #################### # ############################## ####################
2 #################### # ############################## ####################
3 #################### # ############################## ####################
4 #################### # ############################## ####################
5 #################### # ############################## ####################
6 #################### # ############################## ####################
7 #################### # ############################## ####################
8 #################### # ############################## ####################


1        2        3        4                5        6        7        8
######## ######## ######## ########         ######## ######## ######## ########
######## ######## ######## ########         ######## ######## ######## ########
.lf 497 ./smcreate.1
.fi
.ad b
\}
.el .so kyrecord.scr
.if t \f(CB
.if n .sp
.PS 6.5i
.lf 1 ./softkey.sky
.bx "Copy a\ \ " "key set\ "
.bx "Paste a\ " "key set\ "
.bx "Create a" "new set\ "
.bx "Delete a" "key set\ "
.bx "\ \ \ \ \ \ \ \ " "\ \ \ \ \ \ \ \ "
.bx "First\ \ \ " "Set\ \ \ \ \ "
.bx "Last\ \ \ \ " "Set\ \ \ \ \ "
.bx "Main\ \ \ \ " "Keys\ \ \ \ "
.lf 505 ./smcreate.1
.PE
.EB "Fig. 7. Softkey Edit Screen."
.TP
.B Command Name
This is converted to upper case by
.B sm2c
and is used in your program as an
.B int.
The range of
.B "Screen Manager"
commands are available to you, for example \fISM_QUIT_C\fP.
.TP
.B Toggle
If the softkey should toggle an asterix '*' every time a softkey is
pressed then set this field to 'Y'.
.TP
.B Help
Not yet implemented.
.TP
.B Command callback function
Not yet implemented.
.SH MENU EDITOR
Not yet implemented.
.SH GLOBAL COMMANDS
Most commands are available most of the time in response to a keychord
as well as through the softkeys (see the help screens).
Some commands do not have softkey
labels or are of general utility and here are their default key
bindings:
.TP
.B Shell out
Meta-!: suspend operation and run a shell
.TP
.B Popup
Meta-m: popup a menu of values for a field if available (the
availability of popups are normally indicated by a '^' to the right of
the field).
.TP
.B Exit
Meta-Z: exit with an opportunity to save files
.TP
.B Save files
Meta-^S: (that's Meta-Control-S) save files
.TP
.B Cancel
^C
.TP
.B Help
Meta-H: show some help.
.TP
.B Refresh
^L: In case the screen is trashed by other programs
.SH FILES
.TP
.B *.dat
Conventionally,
.B "Screen Manager"
files have a '.dat' extension although this is not required.
.TP
.B *.txt
Data files - again, this convention is not enforced.
.TP
.B *~
Before files are saved, the old file is moved to *~ as a form of
backup (*.~?? under MS-DOS).
Thus \fIproject.dat\fP would be backed up
to \fIproject.dat~\fP (\fIproject.~da\fP under MS-DOS)
.SH ENVIRONMENT
.TP
.B TMP
If specified, temporary files (if used) are put here.
Otherwise /tmp
is used.
.TP
.B EDITOR
Used by the \fIExp&Edit Screen\fP command as the default editor,
otherwise
.BR vi (1)
is used under UNIX and
.B smedit
is used under MS-DOS.
.TP
.B SHELL
Used by the global command SM_SHELL_C (usually bound to Meta-!) if set
otherwise /bin/sh is used.
.SH "SEE ALSO"
Postscript version of these man pages which have screenshots -
probably in /usr/share/doc/scrmgr-X.Y.
.LP
.lf 1 ./smcreate.lst
.BR scrmgr (1),
.BR sm2awk  (1),
.BR sm2c  (1),
.BR smcalc (1),
.BR smclean (1),
.BR smdata (1),
.BR smedit (1),
.BR smfind (1),
.BR smgrep (1),
.BR smproj  (1),
.BR smquick  (1),
.BR smsort (1),
.BR smtree (1),
.BR smupdate  (1),
.BR xctool (1),
.BR smdisp (1),
.BR pcurse (1)
.lf 595 ./smcreate.1
.SH AUTHOR
Bob Hepple <bhepple@freeshell.org>
.SH COPYRIGHT
Copyright \(co 1991-2002 Bob Hepple
